The present disclosure relates generally to computing systems, and more particularly to dynamic class management.
As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option is a computing system. Computing systems may vary in complexity from a single processor operating in relative isolation to large networks of interconnected processors. The interconnected processors may be in close proximity to each other or separated by great distances both physically and as distance is measured in computer networking terms. The interconnected processors may also work together in a closely cooperative fashion or in a loose weakly coupled fashion. Because technology and processing needs and requirements may vary between different applications, the structure and arrangement of the computing system may vary significantly between two different computing systems. The flexibility in computing systems allows them to be configured for both specific users, specific uses, or for more general purposes. Computing system may also include a variety of hardware and software components that may be configured to process, store, and communicate information based on the needs of the users and the applications.
Additionally, some examples of computing systems include non-transient, tangible machine-readable media that include executable code that when run by one or more processors, may cause the one or more processors to perform the steps of methods described herein. Some common forms of machine readable media include, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, and/or any other medium from which a processor or computer is adapted to read.
In the early days of computing, software developers often created software components or software projects entirely by themselves. As the complexity of software projects increased, it often became undesirable and inefficient to create all the elements of these software projects. Instead, software developers often rely on software libraries and packages to provide many features and elements of software projects. Many of these software libraries and packages, themselves, rely on other software libraries and packages. Thus, in order to build or use a software project, the software developers and end users also need to have access to the relied upon software libraries and packages. During the build process, software libraries that are not known to be already located on a deployment platform where the software project is to be used are often bundled together and distributed as a group. This provides the benefit of distributing the software project with all of the software libraries and packages the software project depends on to the deployment platform together so that all the software components that may be used by the software project are available on the deployment platform. This may also introduce inefficiencies as software libraries and packages often include all the software components that might be needed to use the software libraries and packages even though, in many cases, all of the software components are typically not used or only rarely used.
Accordingly, it would be desirable to provide improved management of software components so as to avoid bundling unused software components.